<?php
	namespace Admin\Model;
	use Think\Model;
	/**
	 * 后台分类表模型类
	 */
	class CateModel extends Model {
		/**
		 * 获取列表数据
		 */
		public function getCateData() {
			// 连表查询
			$data = $this->alias('ca')->field('ca.*,cate.cate_name as pname')->join('left join cate on ca.cate_pid=cate.id')->where('ca.cate_delete=0')->select();
			// 加载无限极分类文件
			load('@/tree');
			// 使用无限极函数将数据分类显示
			return getTree($data);
		}
		/**
		 * 获取已经存在的分类id和分类名称
		 */
		public function getCate() {
			$data = $this->field('id,cate_pid,cate_name,has_son')->where('cate_delete=0')->select();
			// 加载无限极分类文件
			load('@/tree');
			// 使用无限极函数将数据分类显示
			return getTree($data);
		}
		/**
		 * 添加分类数据
		 */
		public function addData($post) {
			// 获取父类id 
			$cate_pid = $post['cate_pid'];
			$this->where("id=$cate_pid")->setInc('has_son');
			// 执行添加操作
			return $this->add($post);
		}
		/**
		 * 根据id获取数据
		 */
		public function getDataById($id) {
			return $this->find($id);
		}
		/**
		 * 修改
		 */
		public function modify($post) {
			return $this->save($post);
		}
		/**
		 * 查询分类下是否有文章
		 */
		public function haveArticle($id) {
			return $this->field('cate_articlenum')->find($id);
		}
		/**
		 * 逻辑删除单个分类
		 */
		public function logicDelete($id) {
			$post['id'] = $id;
			$post['cate_delete'] = 1;
			return $this->save($post);
		}
		/**
		 * 逻辑删除批量分类
		 */
		public function logicAllDelete($ids) {
			// 使用原生sql语句
			$sql = "update cate set cate_delete=1 where id in ($ids)";
			return $this->execute($sql);
		} 
		/**
		 * 已经被逻辑删除的数据
		 */
		public function getLogicCate() {
			// 连表查询
			$data = $this->alias('ca')->field('ca.*,cate.cate_name as pname')->join('left join cate on ca.cate_pid=cate.id')->where('ca.cate_delete=1')->select();
			// 加载无限极分类文件
			load('@/tree');
			// 使用无限极函数将数据分类显示
			return getTree($data);
		}
		/**
		 * 还原单个记录
		 */
		public function restory($id) {
			$post['id'] = $id;
			$post['cate_delete'] = 0;
			return $this->save($post);
		}
		/**
		 * 彻底删除单个分类
		 */
		public function deleteOne($id) {
			return $this->delete($id);
		}
		/**
		 * 批量彻底删除
		 */
		public function AllDeleteData($ids) {
			return $this->delete($ids);
		}
		/** 
		 * 批量还原
		 */
		public function AllRestore($ids) {
			// 使用原生sql语句
			$sql = "update cate set cate_delete=0 where id in ($ids)";
			return $this->execute($sql);
		}
		/**
		 * 更新分类下的文章数
		 * @param $id  分类的id
		 * @param $is_add 是否是添加   默认为1     1 添加   0 删除
		 */
		public function updateArtNum($id,$is_add=1) {
			// 原生sql
			if($is_add==1) {
				$sql = "update cate set cate_articlenum = cate_articlenum+1 where id=$id";
			}else {
				$sql = "update cate set cate_articlenum = cate_articlenum-1 where id=$id";
			}
			
			$this->execute($sql);
		}
	}
